from typing import Dict, Any
from typing import Optional, List
from pydantic import BaseModel


class ProductInfo(BaseModel):
    name: str
    original_price: float
    current_price: float
    selling_points: List[str]
    marketing_strategies: Optional[List[str]] = []

class TalkCase(BaseModel):
    content: str
    source: Optional[str] = None

class Methodology(BaseModel):
    description: str
    tags: Optional[List[str]] = []

class GenerateScriptRequest(BaseModel):
    product: ProductInfo
    cases: Optional[List[TalkCase]] = []
    methods: Optional[List[Methodology]] = []

class ImageInput(BaseModel):
    url: str


class LLMRequestPayload(BaseModel):
    agentId: str
    chatId: Optional[str] = None
    userChatInput: str
    images: Optional[List[ImageInput]] = []
    files: Optional[List[Dict[str, Any]]] = []
    state: Optional[Dict[str, Any]] = {}
    buttonKey: Optional[str] = None
    debug: bool = False

class UploadResult(BaseModel):
    material_type: str
    content_length: int
    stored_content: str


